前言
由於我在一開始很傻的自己刻了日曆,想說版面看起來很簡單,但沒有考慮到動態互動選擇日期的功能,自以為這麼簡單,自己刻一刻就好,頭都洗一半了,只好繼續完成,花了一些時間把start date動態互動完成後,由於end date要做的事一模一樣,不可能重新寫一次,這樣太傻了,我想一定可以共用程式碼的吧!於是找啊找,恩...原來這叫封裝,而且就是套件的原理來著,還好自己似乎沒有太笨XD竊喜一下,但...知道要做什麼卻不見得做得出來,東試試西trytry,已經封到不知道哪去了,可能自己會先瘋掉,瞥眼一見,饅頭先生到了,用渴望的眼神向他求救,他竟然用閉包解決了我本來卡在constructor繞不出來的窘境,原來這麼簡單啊!好想跟他的腦交換一下XD
先介紹datePicker功能
 
 
 
 
實作步驟
        let dayElement = document.querySelector(`${targetSelector} #dayElement`);
        dayElement.addEventListener("click", function(event) {
            if (event.target.className.includes("visible_date")) {
                datePicked.setDate(event.target.textContent);
                datePicked.setMonth(state.current.getMonth());
                datePicked.setYear(state.current.getFullYear());
                showDatePicked(datePicked, datePicker);
                render();
            }
        });
        let monthElement = document.querySelector(`${targetSelector} #monthElement`);
        monthElement.addEventListener("click", function(event) {
            if (event.target.className.includes("visible_month")) {
                let monthOrder = monthAbbreviation.indexOf(event.target.textContent);
                datePicked.setMonth(monthOrder);
                datePicked.setYear(state.current.getFullYear());
                showDatePicked(datePicked, datePicker);
                monthChange(monthOrder);
                render();
            }
        });
        let yearElement = document.querySelector(`${targetSelector} #yearElement`);
        yearElement.addEventListener("click", function(event) {
            if (event.target.className.includes("visible_year")) {
                datePicked.setYear(event.target.textContent);
                showDatePicked(datePicked, datePicker);
                yearChange(event.target.textContent);
                render();
            }
        });
        function renderHTML(element){
            element.innerHTML = `...剛剛剪下的程式碼`
        }
        const datePickerWrapper = document.querySelector('#datePickerFrom');
        renderHTML(datePickerWrapper);
        function componentDatePicker(targetSelector) {
            function renderHTML (element) {
            element.innerHTML = `......`
            }
            const datePickerWrapper = document.querySelector(targetSelector);
            renderHTML(datePickerWrapper);
        }
        componentDatePicker("#datePickerFrom");
        componentDatePicker("#datePickerTo");
    const previousMonth = document.querySelector(`${targetSelector} #previousMonth`)
    previousMonth.addEventListener('click', function() {
    state.current.setMonth(state.current.getMonth() - 1);
    render();
    })
大致實作步驟就介紹到這裡,講個概念,也許有需要的人應該能有一點靈感,整包太繁雜就不放了。封裝完成後,成就感滿滿ㄚ!太感動了
參考資料